
# 面向对象多态
"""
说明 ：
    1. 必须有继承关系
    2. 子类的方法要复写父类的方法
        1）方法名相同
        2） 子类的参数必须是大于等于父类的参数

多态的使用场景：
    1. 父类中的功能已经无法满足子类的需求
    2. 主要用在需求的多变 。


# 开闭原则
1. 对调用处进行关闭 ： 关闭修改的需求
2. 对实现者来说进行开放 ： 可以适应需求变更 ，从而保证代码的可扩展性
"""


class Test():

    # 实现搜索功能
    def search(self):
        print("需要搜索具体的内容")


class Bugs(Test):

    def search(self):
        return [{'bug_id': 1, 'bug_title': '学生列表页使用学生名称进行搜索 结果不正确', 'bug_project': 'tpshop', 'version': 1.0}]


class Cases(Test):

    def search(self):
        return [{'case_id': 1, 'case_title': '学生列表页使用学', 'bug_project': 'tpshop', 'version': 1.0}]


# 新增了一个需求 ： 开发一个测试报告
class Report(Test):

    def search(self):
        return [{'report_id': 1, 'report_title': '学生列表页使用学', 'bug_project': 'tpshop', 'version': 1.0}]


# 实现一个接口函数
def search_data(test):
    result = test.search()
    return result

# 查询bug数据
print(search_data(Bugs()))

# 查询测试用例数据
print(search_data(Cases()))

# 查询测试报告数据
print(search_data(Report()))